﻿namespace DataStructure;

public interface IList<E>
{
    int Count { get; }
    bool IsEmpty { get; }

    //E Get(int index);
    //void Set(int index, E newE);
    E this[int index] { get; set; }

    //E GetFirst();
    //void SetFirst(E newE);
    //E GetLast();
    //void SetLast(E newE);

    E First { get; set; }
    E Last { get; set; }

    void Add(int index, E e);
    void AddLast(E e);
    void AddFirst(E e);

    int IndexOf(E e);
    bool Contains(E e);

    E RemoveAt(int index);
    E RemoveFirst();
    E RemoveLast();
    bool Remove(E e);

    void Clear();
}
